/**
 * @description $column.type == 日 | 日长 | 日当 | 日长当
 * 日期选择器
 * 
 * 配置项：
 * formatValidation: 
 *  gt 只能选择今天之后日期
 *  ge 只能选择今天和之后日期
 *  gt 只能选择今天以前日期
 *  gt 只能选择今天和以前日期
 */

import { Form, DatePicker } from 'antd';
import dayjs from 'dayjs'
import getDisabled from '../getDisabled';
import getRule from '../getRule';

function YyDatePicker({ column, disabledColumnNames, showLabel }) {

  // [1] 配置校检rules字段。column已经有rules则取，无则重新生成
  let rules = column.rules ? column.rules : getRule(column)

  // [2] 配置disabled字段
  let disabled = getDisabled(column) || disabledColumnNames.includes(column.columnName)

  // formatValidation配置项
  let formatValidation = column.formatValidation
  let disabledDate = null

  switch (formatValidation) {

    case 'gt':
      // 只能选择今天之后日期
      disabledDate = (current) => {
        return current && current < dayjs().endOf('day');
      }
      break;

    case 'ge':
      // 只能选择今天和今天之后日期
      disabledDate = (current) => {
        return current && current < dayjs().startOf('day');
      }
      break;

    case 'lt':

      // 只能选择今天以前日期
      disabledDate = (current) => {
        // return current && current > dayjs().startOf('day'); 实现不了，还是可以选择当天
        return current && current > dayjs().startOf('day').subtract(1);
      }
      break;

    case 'le':
      // 只能选择今天和以前日期
      disabledDate = (current) => {
        return current && current > dayjs().endOf('day');
      }
      break;

  }

  return (
    <Form.Item
      label={showLabel ? column.comments : null}
      name={column.columnName}
      rules={rules}
    >
      <DatePicker
        disabled={disabled}
        showTime={column.form_showTime}
        placeholder={column.placeholder}
        disabledDate={disabledDate}

      />
    </Form.Item>
  )
}

export default YyDatePicker